#coding=utf-8
from Tkinter import *
import time
import threading
import tkMessageBox
import tkFileDialog



"""
#  http://codepad.org/EBce9YRF
# http://tieba.baidu.com/p/2292814710
python 的特性决定了
几千行以内的一个人做也可以轻轻松松（几千行的规模能做很多完整的东西了）
规模再大的，初学者又基本帮不上忙
所以上面留邮箱的同学，建议根据自己兴趣找点事情做吧

写软件本来就是 发现问题 -> 分析问题 -> 解决问题 这个过程
前两步指望著有人处理，就在 解决问题 那裏布置功课似的写几行代码，那其实什麼都没学到
最主要的功力在前两步，何况如果没有前两步，那麼可能还不具备写代码需要的 domain knowledge，连写都写不出来

对 web 感兴趣的，学 django 或 flask 或 bottle 或 tornado，写个自己的 blog 或 wiki 或 forum
对 game 感兴趣的，玩 pygame
对桌面软件感兴趣的，看相关的 GUI 库
对科学计算感兴趣的，研究 scipy, numpy
对算法感兴趣的，刷 project euler，python 很适合，比如第一题只需一行代码，第二十可以两行解决
对开源软件感兴趣的，找个喜欢的项目，开始去读源码，看 bug list，试试能不能除 bug 并提交 patch

做了能让自己提高的事情有很多，但报名做 啦啦队 等 带队冲锋 的，是最被动的一种

"""

def handle_it(event, i=1):
    def inner_func(event, i):
        print "inner i {0}".format(i)
    import random as r
    i = r.randint(1, 20)
    inner_func(event, i)
    print "event handler"
    # print event.data


def fire_it():
    print "waiting 3 seconds"
    time.sleep(3)
    root.event_generate('<<test>>', when='tail', data="hi there")


def gen_it():
    # root.event_generate('<<test>>')
    name = "whomever"
    print "{name} is good!".format(name="yes")
    print "=== {0}".format(name)

def open_file():
    # tkFileDialog.askopenfilename(title="choose a file to open", initialfile="d:/ri.py")
    with open(ur'd:/cao.txt', 'w') as out_file:
        out_file.write(u'你好python\n hello python!'.encode('utf-8'))
    print 'written!'

def exit_me():
    isQuit = tkMessageBox.askyesnocancel(title="conformation", message="Are you sure to quit?", default=tkMessageBox.NO)
    if isQuit:
        print "bye!"
        sys.exit(0)
    else:
        print "cancelled!"



def greeting(event, i=0):
    print "event type {0}".format(event.type)
    import random as r
    def inner_func(event, i):
        print "this is inner greeting {0}".format(i)
    i = r.randint(1, 100)
    inner_func(event, i)



root = Tk()
root.title("Tkinter Demo")
root.geometry("300x300+50+50")
# root.after(1, lambda: root.event_generate('<<test>>', data="hi there"))
root.bind('<Key-a>', handle_it)
print "bind!"
btnHi = Button(root, text="苏仨 仨锅 SuSa=", command=gen_it)
btnHi.pack()
btnOpen = Button(root, text="open a file", command=open_file)
btnOpen.pack()
btnBoom = Button(root, text="booming")
btnBoom.pack()
""" ButtonRelase 好像并没有说明的那样可以取消"""
btnBoom.bind("<ButtonRelease-1>", greeting)
btnExit = Button(root, text="Quit", command=exit_me)
btnExit.pack()
# root.after(100)
# root.event_generate('<<test>>', when='now')
root.mainloop(n=0)
# threading.Thread(target=fire_it).start()
